#ifndef _FENGINE_MOUSE_INPUT_LISTENER
#define _FENGINE_MOUSE_INPUT_LISTENER

#include "stdafx.h"
#include "InputManager.h"
#include "FEngineType.h"

namespace FEngine
{
	/**
	 * Abstract class receiving the mouse input event.
	 * Implement the following method :
	 *		- mouseButtonPressed(int, const Vector2&)
	 *		- mouseButtonReleased(int, const Vector2&)
	 *		- mouseMoved(const Vector2&)
	 * and register the class with the CoreEngine::InputManager.
	 */
	class MouseInputListener
	{

		public:
			
			/**
			 * Called every time a mouse button is pushed.
			 * @param _key Id of the pushed mouse button.
			 */
			virtual void mouseButtonPressed(int _button, const Vector2& _position) = 0;
			
			/**
			 * Called every time a mouse button is released.
			 * @param _key Id of the released mouse button.
			 */
			virtual void mouseButtonReleased(int _button, const Vector2& _position) = 0;

			/**
			 * Called every time the mouse moves.
			 * @param _delta Vector2 containing the number of pixel moved.
			 */
			virtual void mouseMoved(const Vector2& _delta) = 0;
	};

} // namespace FEngine

#endif
